package cc.rengu.igas.bomp.common.enums;

/**
 * 特殊交易权限关联关系
 */
public enum ProdAuthCtrlEnum {

    /**
     * 银行卡支付-快捷支付：
     * 1、本行卡快捷支付(P01PM004 00)、新卡支付(本行卡)(P01PM001 00)、银行卡首次签约并支付(本行卡)(P01PM011 00)，后两个产品隐藏，
     * 并且增加与第一个产品的关联关系，即选择本行卡快捷支付时，后两个产品同步开通。
     * 2、银联无跳转支付(P01PM004 01)、银联无跳转签约并支付(P01PM013 00)、银联无跳转首次签约并支付(P01PM013 01)，参照第一条处理
     * 3、银联无卡快捷支付(P01PM004 02)、新卡支付(银联无卡快捷)(P01PM001 01)、银行卡首次签约并支付(银联无卡快捷)(P01PM011 01)，参照第一条处理
     * 4、【前端负责处理，后台不做操作】
     * 开通本行个人网关支付(P01PM007 00)、本行企业网关支付(P01PM007 01) ，默认开通本行网银支付API(P01CP241 00) ；
     * 本行个人网关支付退款(P04PM007 00)，本行企业网关支付退款(P04PM007 01) ，默认开通本行网银支付退款API(P04CP241 00)  ；
     * 本行网银支付API(P04PM007 00)、本行网银支付退款API(P04CP241 00)可独立开通
     * 5、收银台微信公众号支付(P01PM002 00)，默认开通 微信公众号支付API(P01CP501 00) ；
     * 收银台微信小程序支付(P01PM002 01) ，默认开通微信小程序支付API(P01CP502 00)；
     * 微信公众号支付API(P01CP501 00)、微信小程序支付API(P01CP502 00)均隐藏
     */
    P01PM004_00("P01PM004", "00", true, "本行卡快捷支付"),
    P01PM004_01("P01PM004", "01", true, "银联无跳转支付"),
    P01PM004_02("P01PM004", "02", true, "银联无卡快捷支付"),
    P01PM001_00("P01PM001", "00", false, "新卡支付(本行卡)"),
    P01PM001_01("P01PM001", "01", false, "新卡支付(银联无卡快捷)"),
    P01PM011_00("P01PM011", "00", false, "银行卡首次签约并支付(本行卡)"),
    P01PM011_01("P01PM011", "01", false, "银行卡首次签约并支付(银联无卡快捷)"),
    P01PM013_00("P01PM013", "00", false, "银联无跳转签约并支付"),
    P01PM013_01("P01PM013", "01", false, "银联无跳转首次签约并支付"),
    //【注】前台处理，后台无需处理
//    P01PM007_00("P01PM007", "00", true, "开通本行个人网关支付"),
//    P01PM007_01("P01PM007", "01", true, "本行企业网关支付"),
//    P01CP241_00("P01CP241", "00", true, "本行网银支付API"),
//    P04PM007_00("P04PM007", "00", true, "本行个人网关支付退款"),
//    P04PM007_01("P04PM007", "01", true, "本行企业网关支付退款"),
//    P04CP241_00("P04CP241", "00", true, "本行网银支付退款API"),
    P01PM002_00("P01PM002", "00", true, "收银台微信公众号支付"),
    P01PM002_01("P01PM002", "01", true, "收银台微信小程序支付"),
    P01CP501_00("P01CP501", "00", false, "微信公众号支付API"),
    P01CP502_00("P01CP502", "00", false, "微信小程序支付API"),

    //开通新卡支付(网联) P01PM001_02，则默认开通 银行卡首次签约并支付(网联) P01PM011_02，后者隐藏
    P01PM001_02("P01PM001", "02", true, "新卡支付(网联)"),
    //银行卡首次签约并支付(网联) P01PM011_02 隐藏
    P01PM011_02("P01PM011", "02", false, "银行卡首次签约并支付(网联)"),

    P01PM019_00("P01PM019", "00", true, "手机银行扫码支付"),
    P01PM020_00("P01PM020", "00", false, "新卡签约并支付"),
    P01PM021_00("P01PM021", "00", false, "首次签约并支付"),

    ;

    /**
     * 交易码
     */
    private String txnNum;

    /**
     * 业务类型
     */
    private String bizType;

    /**
     * 是否展示 true 展示 ； false 隐藏
     */
    private boolean showFlag;

    /**
     * 描述
     */
    private String desc;


    public String getTxnNum() {
        return txnNum;
    }

    public String getBizType() {
        return bizType;
    }

    public String getDesc() {
        return desc;
    }

    public boolean isShowFlag() {
        return showFlag;
    }

    ProdAuthCtrlEnum(String txnNum, String bizType, boolean showFlag, String desc) {
        this.txnNum = txnNum;
        this.bizType = bizType;
        this.showFlag = showFlag;
        this.desc = desc;
    }

    /*根据交易码业务类型查询权限
     * txnNum 交易码
     * bizType 业务类型
     * */
    public static ProdAuthCtrlEnum getProdEnumByTxnNumBizType(String txnNum, String bizType) {
        for (ProdAuthCtrlEnum prodAuthCtrlEnum : ProdAuthCtrlEnum.values()) {
            if (prodAuthCtrlEnum.getTxnNum().equals(txnNum) && prodAuthCtrlEnum.getBizType().equals(bizType)) {
                return prodAuthCtrlEnum;
            }
        }
        return null;
    }

}
